package com.leyou.item.service;

import com.leyou.common.pojo.PageResult;
import com.leyou.item.pojo.Sku;
import com.leyou.item.pojo.Spu;
import com.leyou.item.pojo.SpuDetail;
import com.leyou.item.vo.SpuVo;

import java.util.List;

public interface GoodsService {

    /**
     * 分页查询商品信息
     * @param key 关键字
     * @param saleable 是否上下架
     * @param page 页码
     * @param rows 当前页条数
     * @return PageResult<SpuVo>
     */
    PageResult<SpuVo> querySpuBoByPage(String key, Boolean saleable, Integer page, Integer rows);

    /**
     * 保存商品信息
     * @param spuVo
     */
    void saveGoods(SpuVo spuVo);

    /**
     * 根据spuId查询spu详细信息
     * @param spuId spuId
     * @return spu详细信息
     */
    SpuDetail querySpuDetailBySpuId(Long spuId);

    /**
     * 根据spuId查询所有sku信息
     * @param spuId spuId
     * @return 所有sku信息
     */
    List<Sku> querySkuBySpuId(Long spuId);

    /**
     * 修改商品信息
     * @param spuVo 商品信息
     */
    void updateGoods(SpuVo spuVo);

    /**
     * 修改商品下架状态
     * @param spuId
     */
    void removalGoods(Long spuId, Boolean saleable);

    /**
     * 删除商品
     * @param spuId
     */
    void deleteGoods(Long spuId);

    /**
     * 根据spu的id查询spu
     * @param id
     * @return
     */
    Spu querySpuById(Long id);

    /**s
     * 根据skuId查询sku信息
     * @param id
     * @return
     */
    Sku querySkuById(Long id);
}
